package com.FOD.web;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONObject;

import com.FOD.util.UtilVar;

public class DatesFunctions {

	private JSONParser jsonParser;

	// constructor
	public DatesFunctions() {
		// Inicializamos un objeto del JSON parser
		jsonParser = new JSONParser();
	}

	/**
	 * Hace al servidor una peticion de cita
	 * */
	public JSONObject makeDate(Date fecha_consulta, String horario,
			Date fecha_solicitud, int paciente_id) {
		// Creamos una lista de parametros que enviaremos al servidor
		List<NameValuePair> params = new ArrayList<NameValuePair>();

		params.add(new BasicNameValuePair("tag", UtilVar.DATE_MAKE_DATE)); 
		// Parametros para el query
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		String date = sdf.format(fecha_consulta);
		params.add(new BasicNameValuePair("fecha_consulta", date));
		params.add(new BasicNameValuePair("horario", horario));
		date = sdf.format(fecha_solicitud);
		params.add(new BasicNameValuePair("fecha_solicitud", date));
		params.add(new BasicNameValuePair("paciente_id", String.valueOf(paciente_id)));

		// Creamos un json y hacemos la peticion al servidor con los parametros
		// indicados
		JSONObject json = jsonParser.getJSONFromUrl(UtilVar.DATE_URL, params);
		// Regrezamos el json para que sea validado
		return json;
	}
	
	public JSONObject getDates(Date fecha_consulta) {
		// Creamos una lista de parametros que enviaremos al servidor
		List<NameValuePair> params = new ArrayList<NameValuePair>();

		params.add(new BasicNameValuePair("tag", UtilVar.DATE_GET_DATES)); 
		// Parametros para el query
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		String date = sdf.format(fecha_consulta);
		params.add(new BasicNameValuePair("fecha_consulta", date));

		// Creamos un json y hacemos la peticion al servidor con los parametros
		// indicados
		JSONObject json = jsonParser.getJSONFromUrl(UtilVar.DATE_URL, params);
		// Regrezamos el json para que sea validado
		return json;
	}
	
	public JSONObject getDatesDoctor(Date fecha_consulta) {
		// Creamos una lista de parametros que enviaremos al servidor
		List<NameValuePair> params = new ArrayList<NameValuePair>();

		params.add(new BasicNameValuePair("tag", UtilVar.DATE_GET_DATES_DOCTOR)); 
		// Parametros para el query
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		String date = sdf.format(fecha_consulta);
		params.add(new BasicNameValuePair("fecha_consulta", date));

		// Creamos un json y hacemos la peticion al servidor con los parametros
		// indicados
		JSONObject json = jsonParser.getJSONFromUrl(UtilVar.DATE_URL, params);
		// Regrezamos el json para que sea validado
		return json;
	}
	
	public JSONObject getDatesByRange(Date date1, Date date2) {
		// Creamos una lista de parametros que enviaremos al servidor
		List<NameValuePair> params = new ArrayList<NameValuePair>();

		params.add(new BasicNameValuePair("tag", UtilVar.DATE_GET_DATE_BY_RANGE)); 
		// Parametros para el query
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		String date = sdf.format(date1);
		params.add(new BasicNameValuePair("fecha1", date));
		date = sdf.format(date2);
		params.add(new BasicNameValuePair("fecha2", date));

		// Creamos un json y hacemos la peticion al servidor con los parametros
		// indicados
		JSONObject json = jsonParser.getJSONFromUrl(UtilVar.DATE_URL, params);
		// Regrezamos el json para que sea validado
		return json;
	}
	
	public JSONObject updateDate(int dateId, int status) {
		// Creamos una lista de parametros que enviaremos al servidor
		List<NameValuePair> params = new ArrayList<NameValuePair>();

		params.add(new BasicNameValuePair("tag", UtilVar.DATE_UPDATE_DATE)); 

		params.add(new BasicNameValuePair("id", String.valueOf(dateId)));
		params.add(new BasicNameValuePair("estado", String.valueOf(status)));

		// Creamos un json y hacemos la peticion al servidor con los parametros
		// indicados
		JSONObject json = jsonParser.getJSONFromUrl(UtilVar.DATE_URL, params);
		// Regrezamos el json para que sea validado
		return json;
	}

}
